#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//编程实现：两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？ 
//输入例子:
//1999 2299
//输出例子 : 7
/*int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	int a = m^n;
	int count = 0;
	while (a)
	{
		count++;
		a = a&(a-1);
	}
	printf("%d", count);
	return 0;
}
*/

//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
int main()
{
	int n = 0;
	scanf("%d", &n);
	int count = 0;
	int a[16] = { 0 };
	int b[16] = { 0 };
	while (n)
	{
		if ((n % 2 == 0) && (count % 2 == 0))
		{
			a[count/2] = 0;
			n = (n >> 1);
			count++;
		}
		else if ((n % 2 == 1) && (count % 2 == 0))
		{
			a[count/2] = 1;
			n = (n >> 1);
			count++;
		}
		else if ((n % 2 == 0) && (count % 2 == 1))
		{
			b[(count-1)/2] = 0;
			n = (n >> 1);
			count++;
		}
		else if ((n % 2 == 1) && (count % 2 == 1))
		{
			b[(count-1)/2] = 1;
			n = (n >> 1);
			count++;
		}
	}
	printf("偶数位是");
	for (int i = 15; i >= 0; i--)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	printf("奇数位是");
	for (int i = 15; i >= 0; i--)
	{
		printf("%d ", b[i]);
	}
	return 0;
}

思路：
1. 提取所有的奇数位，如果该位是1，输出1，是0则输出0
2. 以同样的方式提取偶数位置


 检测num中某一位是0还是1的方式：
   1. 将num向右移动i位
   2. 将移完位之后的结果与1按位与，如果：
      结果是0，则第i个比特位是0
      结果是非0，则第i个比特位是1
*/
void Printbit(int num)
{
	for(int i=31; i>=1; i-=2)
	{
		printf("%d ", (num>>i)&1);
	}
	printf("\n");
    
	for(int i=30; i>=0; i-=2)
	{
		printf("%d ", (num>>i)&1);
	}
	printf("\n");
}